#ifndef __COMUNPRUEBA_ARCHIVOENMEMORIA_H
#define __COMUNPRUEBA_ARCHIVOENMEMORIA_H

/*****************************************************************************
*                     Organizaci�n de Datos - 75.06                          *
*                         C�tedra Lic. Servetto                              *
*            Facultad de Ingenier�a - Universidad de Buenos Aires            *
******************************************************************************/ 

#include <map>
#include <stack>
#include "../Comun/Archivo.h"

using namespace std;
using namespace Comun;

namespace ComunPrueba
{

	typedef map<int, Grupo>::iterator IteradorDeGruposEnMemoria;

	class ArchivoEnMemoria : public IArchivo
	{
		public:

		ArchivoEnMemoria();
		~ArchivoEnMemoria();
		int CrearGrupo(Grupo &grupo);
		CodigoResultado GuardarGrupo(Grupo &grupo, bool omitirSubflujo = false);
		Grupo& LeerGrupo(int grupoId);
		void BorrarGrupo(int grupoId);
		int PrimerGrupo();
		int SiguienteGrupo(int grupoIdActual);

		private:

		map<int, Grupo>* gruposEnMemoria;
		stack<int>* libres;
		int primerGrupoId;
		int proximoGrupoId;
		int TraerIdDeGrupoLibre();

		static const int CantidadSobreflujo = 5;
		static const int CantidadSubflujo = 2;

	};

}

#endif
